package com.zjsru.oneDay;

import java.util.*;

/**
 * 2094. 找出 3 位偶数
 * @Author: cookLee
 * @Date: 2025-05-12 
 */
public class FindEvenNumbers {

    /**
     * 主
     * \
     * 输入：digits = [2,1,3,0]
     * 输出：[102,120,130,132,210,230,302,310,312,320]
     * 解释：
     * 所有满足题目条件的整数都在输出数组中列出。
     * 注意，答案数组中不含有 奇数 或带 前导零 的整数。
     * \
     * 输入：digits = [2,2,8,8,2]
     * 输出：[222,228,282,288,822,828,882]
     * 解释：
     * 同样的数字（0 - 9）在构造整数时可以重复多次，重复次数最多与其在 digits 中出现的次数一样。
     * 在这个例子中，数字 8 在构造 288、828 和 882 时都重复了两次。
     * \
     * @param args args
     */
    public static void main(String[] args) {
        FindEvenNumbers findEvenNumbers = new FindEvenNumbers();
        System.out.println(Arrays.toString(findEvenNumbers.findEvenNumbers(new int[]{2, 1, 3, 0})));
    }

    public int[] findEvenNumbers(int[] digits) {
        Set<Integer> set = new HashSet<>();
        for (int i = 0; i < digits.length; i++) {
            for (int j = 0; j < digits.length; j++) {
                for (int k = 0; k < digits.length; k++) {
                    // 确保三个数字的索引不重复
                    if (i == j || j == k || i == k) {
                        continue;
                    }
                    int num = digits[i] * 100 + digits[j] * 10 + digits[k];
                    if (num >= 100 && num % 2 == 0) {
                        set.add(num);
                    }
                }
            }
        }
        List<Integer> list = new ArrayList<>(set);
        Collections.sort(list);
        int[] ans = new int[list.size()];
        for (int i = 0; i < list.size(); i++) {
            ans[i] = list.get(i);
        }
        return ans;
    }
}
